package com.example.demo2_review.design_pattern.creational_patterns.singleton_pattern;

import cn.hutool.core.bean.BeanUtil;

/**
 * @Author zwp14
 * @create 2024/6/24 18:48
 * @description 单例模式-饿加载
 * 在类加载时就创建了实例，保证了线程安全。但是可能会在应用启动时加载大量类，造成资源浪费。
 */
public class EagerSingleton {

    private static final EagerSingleton EAGER_SINGLETON = new EagerSingleton();

    private EagerSingleton(){
        //避免反射创建
        if (!BeanUtil.isEmpty(EAGER_SINGLETON)){
            throw new RuntimeException("单例对象不能重复创建!");
        }
        System.out.println("成功创建单例对象!");
    }

    public static EagerSingleton getInstance(){
        return EAGER_SINGLETON;
    }

    /**
     * 避免反序列化创建单例
     * @return 创建单例
     */
    public Object readResolve(){
        return EAGER_SINGLETON;
    }
}
